const http = require('http')
const url = require('url')
const fs = require('fs')
const path = require('path')
const querystring = require('querystring')

// 定义网站根目录
const webRoot = path.join(__dirname, 'src')

http.createServer((req, res) => {
  // 判断请求的方式 get/post
  // console.log(req.method);

  // 请求的url 解构赋值
  let { pathname, query: get } = url.parse(req.url, true)
  // 获取请求文件的扩展名称 .html
  let extname = path.extname(pathname)

  if ('/favicon.ico' !== pathname && req.method === 'GET') {
    // 缺省值
    pathname = pathname === '/' ? '/index.html' : pathname
    // 设置默认文件所在的路径 针对于非html页面
    let filepath = path.join(webRoot, pathname)
    // 判断是否是html页面
    if ('.html' === extname) {
      filepath = path.join(webRoot, 'html', pathname)
    }
    // 读取文件
    fs.readFile(filepath, (err, data) => {
      if (err) {
        // 读取文件失败
        res.statusCode = 404
        res.end('not found')
      } else {
        res.end(data)
      }
    })



  } else { // post请求
    switch (pathname) {
      case '/login':// 用户登录
        // 接受post请求的数据 两个事件完成 可以理解为post数据是一个流
        // data 接受数据事件 end 数据接受完毕事件  此事件是req接受对象中的事件
        /* let data = ''
        // 监听事件 接受数据事件
        req.on('data', chunk => data += chunk)
        // 数据接受完毕事件
        req.on('end',()=>{
          console.log(data)
          res.end('post')
        }) */
        let data = []
        // 监听事件 接受数据事件
        req.on('data', chunk => data.push(chunk))
        // 数据接受完毕事件
        req.on('end', () => {
          // 把chunk数组成连接在一起
          let postData = Buffer.concat(data).toString()
          console.log(querystring.parse(postData))
          res.end('post')
        })
        break;
      default:
        res.end('not')
    }
  }
}).listen(8080, () => console.log('8080启动'))



